package com.woniu.gf.pawn.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.woniu.gf.pawn.comm.core.domain.ProductBigType;
import com.woniu.gf.pawn.comm.core.domain.ProductBrand;
import com.woniu.gf.pawn.comm.core.domain.ProductPropertyValue;
import com.woniu.gf.pawn.comm.core.domain.ProductSmallType;
import com.woniu.gf.pawn.product.dto.IdentifyImageDto;
import com.woniu.gf.pawn.product.dto.ProductDto;
import com.woniu.gf.pawn.product.dto.ProductPropertyDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author Lucas
 * @since 2020-10-13
 */
public interface ProductBigTypeMapper extends BaseMapper<ProductBigType> {

    /**
     * 查询名字是否重复
     */
    ProductBigType findName(String name);

    /**
     * 查询
     */
    IPage<ProductBigType> selectPageVo(Page<ProductBigType> page, @Param("productBigTypeName") String productBigTypeName);

    /**
     * 查询大类
     */

    List<Map<Integer, String>> findMap();

    /**
     *根据id 查询 大类对应的鉴定图
     */
    List<Map<String, String>> findByIdDefinition(Integer bigId);

    /**
     * 根据大类id 查询是否有商品
     */
    int findByBigId(Integer bigId);

    /**
     * 大类的删除批量
     */
    void deleteBigType(List<Integer> bigIds);

    List<ProductSmallType> findSmallTypeByBigTypeId(Integer bigTypeId);

    List<ProductBrand> findProductBrandByBigTypeId(Integer bigTypeId);

    List<ProductDto> findProductByBigTypeId(Integer bigTypeId);

    List<IdentifyImageDto> findIdentifyImageDtoByBigTypeId(Integer bigTypeId);

    List<ProductPropertyDto> findProductPropertyByBigTypeId(Integer productId);

    List<ProductPropertyValue> findProductPropertyValueByBigTypeId(Integer productPropertyId);

    @Select("SELECT b.product_big_type_id , b.product_big_type_name from pawn_product_big_type b")
    List<ProductBigType> findAllBigType();


}